#!/bin/sh

MOD_NAME="bandsel"
MOD_DEFAULTS=/opt/$MOD_NAME/etc/defaults
MOD_SETTINGS=/opt/$MOD_NAME/etc/settings
[ -L "$MOD_SETTINGS" ] && MOD_SETTINGS=`readlink $MOD_SETTINGS`

MOD_BINARY=$MOD_NAME
MOD_STORAGE=/var/data/$MOD_NAME
if [ ! -d $MOD_STORAGE ]; then
        mkdir -p "$MOD_STORAGE"
fi
if [ ! -d /tmp/$MOD_NAME ]; then
        mkdir -p "/tmp/$MOD_NAME"
fi

[ -f "$MOD_SETTINGS" ] || cp $MOD_DEFAULTS $MOD_SETTINGS
[ -x "/sbin/hash_verify" ] && [ ! -f "$MOD_SETTINGS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash

. $MOD_SETTINGS

case "$1" in

  start|restart)
    [ -x "/sbin/hash_verify" ] && ! hash_verify $MOD_SETTINGS && exit 1
    if [ "$1" = "restart" ]; then
      echo -n "Restarting module $MOD_NAME: "
      killall $MOD_BINARY 2>/dev/null
    else
      echo -n "Starting module $MOD_NAME: "
    fi
    if [ "$MOD_bandsel_ENABLED" != "1" ]; then
      echo "skipped (disabled)"
      exit 0
    fi
    cmp -s $MOD_SETTINGS $MOD_STORAGE/settings
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
      echo "skipped (already applied)"
    else
      /opt/$MOD_NAME/bin/$MOD_BINARY &
      RETVAL=$?
      if [ $RETVAL = 0 ]; then
        cp -f $MOD_SETTINGS $MOD_STORAGE/settings 2>/dev/null
        echo "done";
      else
        echo "failed";
      fi
    fi
    exit $RETVAL
  ;;

  stop)
    echo -n "Stopping module $MOD_NAME: "
    killall $MOD_BINARY 2>/dev/null
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    rm -f /tmp/$MOD_NAME/*
    # preserve the $MOD_STORAGE/settings and the current band configuration
    exit $RETVAL
  ;;

  status)
    echo -n "Module $MOD_NAME is "
    killall -0 $MOD_BINARY 2>/dev/null
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "running"; else echo "stopped"; fi
    exit $RETVAL
  ;;

  defaults)
    cp $MOD_DEFAULTS $MOD_SETTINGS 2>/dev/null
    [ -f "$MOD_DEFAULTS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash
    killall $MOD_BINARY 2>/dev/null
    exit 0
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status|defaults}"
    exit 1
  ;;

esac
